<?php

/**
 * @author nguyendu
 * @copyright 2012
 */
class Validate
{
    /**
     * Kiểm tra một xâu có phải là số hay không
     * @param biến value là một giá trị cần kiểm tra
     * @return kết quả trả về kiểu boolean true-phải, false-không phải
     **/
    public static function isNumeric($value)
    {
        if(!preg_match ("/[^0-9]/",$value))
        {
            if(is_numeric($value))
                    return true;
            return false;
        }
        else
            return false;
    }
    
    /**
     * Kiểm tra một xâu có phải là kiểu số nguyên không dấu
     * @param biến value là một giá trị cần kiểm tra
     * @return kết quả trả về kiểu boolean true-phải, false-không phải 
     **/
    public static function isUnsignedNumber($value)
    {
        if(preg_match("",$value))
            return true;
        return false;
    }
    
    /**
     * Kiểm tra một xâu có phải là địa chỉ Email
     * @param biến value là một giá trị cần kiểm tra
     * @return kết quả trả về kiểu boolean true-phải, false-không phải 
     */
    public static function isEmail($value)
    {
        $pattern="/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
        if(preg_match($pattern,$value))
            return true;
        return false;
    }
    
    /**
     * Kiểm tra một xâu có phải là rỗng hay không
     * @param biến value là một giá trị cần kiểm tra
     * @return kết quả trả về kiểu boolean true-phải, false-không phải
    */
    public static function isEmpty($value)
    {
        if(strlen($value)<1||is_null($value)||empty($value))
            return true;
        return false;
    }
    
    
    /**
     * Kiểm tra một xâu có phải là URL hay không
     * @param biến value là một giá trị cần kiểm tra
     * @return kết quả trả về kiểu boolean true-phải, false-không phải
    */
    public static function isURL($value)
    {
        $pattern="/^(http|https|ftp)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/i";
        //$pattern="/^(http|https|ftp)\://[a-zA-Z0-9\-\.] \.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\/\\\$";
        //$pattern="/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
        if(preg_match($pattern,$value))
            return true;
        return false;
    }
    
    
    /**
     * Kiểm tra một xâu có phải kiểu ngày tháng theo dạng DD/MM/YYYY
     * @param biến value là một giá trị cần kiểm tra
     * @return kết quả trả về kiểu boolean true-phải, false-không phải
    */
    public static function isDateTime($value)
    {
        $date=trim($value);
        $date=str_replace(array('\'','.',',','-'),'/',$date);
        //$pattern="/^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$/";//Format date:dd/MM/yyyy
        //$pattern="/^(\d{4})-(\d{2})-(\d{2}) ([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/";
        $date=explode('/',$date);
        if(count($date) == 1&&is_numeric($date[0])&$date[0] < 20991231&&(checkdate(substr($date[0], 4, 2),substr($date[0],6,2) ,substr($date[0], 0, 4))) )
        {
            return true;
        }
        if(count($date) == 3&&is_numeric($date[0])&&is_numeric($date[1])&&is_numeric($date[2])&&(checkdate($date[0], $date[1], $date[2])||checkdate($date[1], $date[0], $date[2])||checkdate($date[1], $date[2], $date[0])))
        {
            return true;
        }

        return false;
        /*if (strlen($date) >= 1 )
        { 
            if(preg_match($pattern,$date)===0)
                return false;
            return true;
        }
        else
            return false; */
    }
    
    /**
	 * Kiểm tra một xâu có phải là địa chỉ IP
	 *
	 * @param biến value là một giá trị cần kiểm tra
	 * @return kết quả trả về kiểu boolean true-phải, false-không phả
	 */
    public static function isIPAddress($value)
    {
	$pattern = "/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i";
	if (preg_match($pattern, $value))
	{
            return true;
	} 
        else
        {
            return false;
	}
    }
}
?>